codigo fuente

imagen ilustrativa


by Fabien BELLANGER

Carga de las librarias

library(sf)
library(raster)
library(spData)
library(plotly)
library(DT)
library(tidyr)
library(leaflet)
library(leaflet.extras)
library(leafem)
library(dplyr)

Carga de Datos

# Conjunto Orquideas
orquideas <-
  st_read(
    "https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2021i-datos/main/gbif/orchidaceae-cr-registros.csv",
    options = c(
      "X_POSSIBLE_NAMES=decimalLongitude",
      "Y_POSSIBLE_NAMES=decimalLatitude"
    ),
    quiet = TRUE
  )

# Asignación del sistema de coordenadas
st_crs(orquideas) = 4326

# Conjunto Areas Silvestres Protegidas
ASP <-
  st_read(
    "https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2021i-datos/main/sinac/asp/asp-wgs84.geojson",
    quiet = TRUE
  )

Limpieza de Datos

# Asignandole valor numerico a la columna coorinateUncertintyInMeters y formato de fecha a la columna eventDate

orquideas <-
orquideas %>%
  mutate(coordinateUncertaintyInMeters= as.numeric(coordinateUncertaintyInMeters)) %>%
  mutate(eventDate= as.Date(eventDate, "%Y-%m-%d"))


# Visualisando la cantidad inicial de Registros
cat("Cantidad original de registros: ", nrow(orquideas))
## Cantidad original de registros:  29863

Paso 1 de la tarea

# Descartando los registros con alta incertidumbre en la ubicación
orquideas <-
  orquideas %>%
  filter(coordinateUncertaintyInMeters <= 1000)

# Visualisando la cantidad final de Registros
cat("Cantidad de registros después de descartar los de alta incertidumbre en la ubicación: ", nrow(orquideas))
## Cantidad de registros después de descartar los de alta incertidumbre en la ubicación:  677

Paso 2 de la tarea

# Visualisando la cantidad inicial de Registros
cat("Cantidad original de registros: ", nrow(orquideas))
## Cantidad original de registros:  677
# Eliminando registros N/A(espacios vacios) columna species
orquideas <- orquideas[!(orquideas$species== ""), ]

# Visualisando la cantidad final de Registros
cat("Cantidad de registros después de descartar los de alta incertidumbre en la ubicación: ", nrow(orquideas))
## Cantidad de registros después de descartar los de alta incertidumbre en la ubicación:  646

Paso 3 de la tarea

# Eliminando los registros que tienen como valor "Area Marina de Manejo" o "Area Marina Protegida" de la columna descripcio
ASP <- ASP[!(ASP$descripcio ==  'Area Marina de Manejo'), ]
ASP <- ASP[!(ASP$descripcio ==  'Area marina protegida'), ]

Preparativos para el mapa

# Creación de conjunto de datos con la cantidad de registros por Area Silvestre Protegida
orqui_ASP <-
  ASP %>%
  sf::st_make_valid()%>%
  sf::st_join(orquideas) %>%
  group_by(nombre_asp) %>%
  summarize(especies = n_distinct(species, na.rm = TRUE)) 

# Asignandole coordenadas
st_crs(orqui_ASP) = 4326

Mapa Registros de Presencia de Orquídeas por Área Silvestre Protegida

# Paleta de colores
colores_registros <-
  colorNumeric(palette = "YlGnBu",
               domain = orqui_ASP$especies,
               na.color = "transparent")

# Mapa Leaflet
leaflet() %>%
  addTiles(group = "OSM") %>%
  addPolygons(
    data = orqui_ASP,
    fillColor = ~ colores_registros(orqui_ASP$especies),
    fillOpacity = 0.7,
    stroke = TRUE,
    color = "black",
    weight = 1,
    popup = paste(
      paste(
        "<strong>ASP:</strong>",
        orqui_ASP$nombre_asp
      ),
      paste(
        "<strong>Cantidad de registros:</strong>",
        orqui_ASP$especies
        
      ),
      sep = '<br/>'
    ),
    group = "Areas silvestres protegidas - registros", 
  ) %>%
  addLayersControl(baseGroups = c("OSM"),
                   overlayGroups = c("Areas silvestres protegidas - registros")) %>%
  addLegend(
    position = "bottomleft",
    pal = colores_registros,
    values = orqui_ASP$especies,
    group = "Areas silvestres protegidas - registros",
    title = "Cantidad de registros"
  )